// ============================================================ //
// ============================================================ //
//
// @Group       : QiXin Supply Chain Team
// @Author      : ZhiQiang Cheng
// @Date        : 2024-07-15
// @Description : 数据库模型
//
// ============================================================ //
// ============================================================ //

package model

import (
	"time"

	"github.com/StarfishProgram/starfish-go-sdk/sdktypes"
	"github.com/shopspring/decimal"
)

type GroupBuyingRoom struct {
	ID                sdktypes.ID   `json:"id"`                // 房间ID
	Name              string        `json:"name"`              // 房间名称
	I18n              string        `json:"i18n"`              // 国际化
	QueueID           sdktypes.ID   `json:"queueId"`           // 队列ID
	DefaultProduct    sdktypes.JSON `json:"defaultProduct"`    // 默认商品
	IsStop            bool          `json:"isStop"`            // 是否停止: 0 = 未停止 1 = 已停止
	IsDeleted         bool          `json:"isDeleted"`         // 是否删除: 0 = 未删除 1 = 已删除
	CreateTime        time.Time     `json:"createTime"`        // 创建时间
	UpdateTime        time.Time     `json:"updateTime"`        // 修改时间
	PrevGroupBuyingId int64         `json:"prevGroupBuyingId"` // 上一次团购ID
}

type GroupBuyingRoomDetail struct {
	GroupBuyingRoom
	Num                 int64     `json:"num"`                 // 房间号
	BrandName           string    `json:"brandName"`           // 品牌名称
	ProductName         string    `json:"productName"`         // 商品名称
	SpecificationValues string    `json:"specificationValues"` // 规格
	ProductId           int64     `json:"productId"`           // 商品ID
	Img                 string    `json:"img"`                 // 商品图片
	Favorite            bool      `json:"favorite"`            // 用户是否收藏
	GroupBuyingId       int64     `json:"groupBuyingId"`       // 团购ID
	UserMaxTickets      int64     `json:"userMaxTickets"`      // 用户最大投票数量
	UserTotalTickets    int64     `json:"userTotalTickets"`    // 用户已投票数
	CurrentTickets      int64     `json:"currentTickets"`      // 当前投票数量
	Progress            int64     `json:"progress"`            // 进度
	MaxTickets          int64     `json:"maxTickets"`          // 最大投票数量
	GroupBuyingStatus   int64     `json:"groupBuyingStatus"`   // 团购状态
	BeginDate           time.Time `json:"beginDate"`           // 开始时间
	NextProductName     string    `json:"nextProductName"`     // 下一轮次商品名称
	NextProductImg      string    `json:"nextProductImg"`      // 下一轮次商品图片
}

type GroupBuyingRoomNotice struct {
	ID            sdktypes.ID `json:"id"`
	RoomID        sdktypes.ID `json:"roomId"`        // 房间ID
	GroupBuyingID sdktypes.ID `json:"groupBuyingId"` // 团购ID
	ProductID     sdktypes.ID `json:"productId"`     // 商品ID
	SkuID         sdktypes.ID `json:"skuId"`         // SKUID
	Type          sdktypes.ID `json:"type"`          // 类型
	Params        *string     `json:"params"`        // 参数
	CreateTime    time.Time   `json:"createTime"`    // 创建时间
	UpdateTime    time.Time   `json:"updateTime"`    // 修改时间
}

type GroupBuyingRoomNoticeDetail struct {
	GroupBuyingRoomNotice
	ProductName string `json:"productName"` // 商品名称
}

type GroupBuyingRoomProductQueue struct {
	ID                   sdktypes.ID `json:"id"`                   // 队列ID
	RoomID               sdktypes.ID `json:"roomId"`               // 房间ID
	GroupBuyingID        sdktypes.ID `json:"groupBuyingId"`        // 团购ID
	ProductID            sdktypes.ID `json:"productId"`            // 商品ID
	SkuID                sdktypes.ID `json:"skuId"`                // SKUID
	IsGroupBuyingProduct bool        `json:"isGroupBuyingProduct"` // 是否团购商品 0:不是 1：是
	CreateTime           time.Time   `json:"createTime"`           // 创建时间
	UpdateTime           time.Time   `json:"updateTime"`           // 修改时间
}

type GroupBuyingRoomProductQueueFull struct {
	GroupBuyingRoomProductQueue
	BrandName           string    `json:"brandName"`           // 品牌名称
	ProductName         string    `json:"productName"`         // 商品名称
	SpecificationValues string    `json:"specificationValues"` // 规格
	Img                 string    `json:"img"`                 // 商品图片
	Progress            int64     `json:"progress"`            // 进度
	GroupBuyingStatus   int64     `json:"groupBuyingStatus"`   // 团购状态
	BeginDate           time.Time `json:"beginDate"`           // 开始时间
}

type GroupBuyingRoomProductQueueDetail struct {
	GroupBuyingRoomProductQueue
	Name     string `json:"name"`     // 商品名称
	Img      string `json:"img"`      // 商品图片
	Favorite bool   `json:"favorite"` // 是否收藏
}

type GroupBuyingVoteDetail struct {
	CreatedDate       time.Time `json:"createdDate"`       // 创建时间
	LastModifiedDate  time.Time `json:"lastModifiedDate"`  // 修改时间
	GroupBuyingID     int64     `json:"groupBuyingId"`     // 团购ID
	MembersID         int64     `json:"membersId"`         // 用户ID
	MembersName       string    `json:"membersName"`       // 用户名
	MembersAvatar     *string   `json:"membersAvatar"`     // 用户头像
	TicketsAmount     int64     `json:"ticketsAmount"`     // 投票数量
	MemberAvatarFrame string    `json:"memberAvatarFrame"` // 用户头像框
	IsWinner          bool      `json:"isWinner"`          // 是否中奖
}

type GroupBuyingPrizeInfo struct {
	ID                            string           `json:"id"`
	CreatedDate                   time.Time        `json:"createdDate"`
	LastModifiedDate              time.Time        `json:"lastModifiedDate"`
	GroupBuyingID                 int64            `json:"groupBuyingId"`
	MembersName                   string           `json:"membersName"`
	IsCash                        bool             `json:"isCash"`
	CashType                      int              `json:"cashType"`
	MembersAvatar                 *string          `json:"membersAvatar"`
	LotteryNum                    int64            `json:"lotteryNum"`
	CashTime                      *time.Time       `json:"cashTime"` // 领奖时间
	ProductID                     int64            `json:"productId"`
	ProductSkuID                  int64            `json:"productSkuId"`
	ProductImages                 *string          `json:"productImages"`
	ProductName                   string           `json:"productName"`
	ProductDescription            string           `json:"productDescription"`
	MaxTickets                    int64            `json:"maxTickets"`
	TXHash                        *string          `json:"txHash"`
	OriginalExchangeTicketsAmount int64            `json:"originalExchangeTicketsAmount"`
	ExchangeTicketsAmount         int64            `json:"exchangeTicketsAmount"`
	Rate                          *decimal.Decimal `json:"rate"`
	HasStock                      bool             `json:"hasStock"`
	ParticipateId                 *string          `json:"participateId"`         // 中奖的团购参与id
	AuctionId                     int64            `json:"auctionId"`             // 竞价Id
	AuctionStatus                 int64            `json:"auctionStatus"`         // 竞价状态
	PendingOffersQuantity         int64            `json:"pendingOffersQuantity"` // 收到待处理的报价数量
}
